package geecache

// 只读数据结构
// 代表双向队列中存储的 值
// 必须实现 Len() 方法，因为要实现 Value接口
type ByteView struct {
	// 存储真实的缓存值
	// 选择 byte 支持任意类型数据的存储
	b []byte
}

func (v ByteView) ByteSlice() []byte {
	// 防止缓存值被外部程序修改
	return cloneBytes(v.b)
}

func (v ByteView) Len() int {
	return len(v.b)
}

func (v ByteView) String() string {
	return string(v.b)
}

func cloneBytes(b []byte) []byte {
	c := make([]byte, len(b))
	copy(c, b)
	return c
}
